/**
 * 
 */
package br.com.devschool.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import br.com.devschool.util.BaseEntity;

/**
 * @author ATILLA
 *
 */
@Entity
@Table
public class Professor extends BaseEntity implements Serializable{
	
	private static final long serialVersionUID = -4907441047391574554L;

	private String 		codigo;
	private Date 		dataCadastro;
	private String 		formacao;
	private String 		atividadeProfissional;
	private Pessoa 		pessoa;
	private List<Turma>	turmas;
	
	public Professor(int id, String codigo, Date dataCadastro, String formacao,
			String atividadeProfissional, Pessoa pessoa, List<Turma> turmas) {
		super(id);
		this.codigo 				= codigo;
		this.dataCadastro 			= dataCadastro;
		this.formacao 				= formacao;
		this.atividadeProfissional	= atividadeProfissional;
		this.pessoa 				= pessoa;
		this.turmas 				= turmas;
	}
	
	public Professor() { }

	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	@Column(name="data_cadastro")
	@Temporal(TemporalType.DATE)
	public Date getDataCadastro() {
		return dataCadastro;
	}

	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	public String getFormacao() {
		return formacao;
	}

	public void setFormacao(String formacao) {
		this.formacao = formacao;
	}

	@Column(name="atividade_profissional")
	public String getAtividadeProfissional() {
		return atividadeProfissional;
	}

	public void setAtividadeProfissional(String atividadeProfissional) {
		this.atividadeProfissional = atividadeProfissional;
	}

	@OneToOne
	@JoinColumn(name="id_pessoa")
	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}

	@OneToMany(mappedBy="professor", fetch = FetchType.EAGER)
	public List<Turma> getTurmas() {
		return turmas;
	}

	public void setTurmas(List<Turma> turmas) {
		this.turmas = turmas;
	}
	
}
